Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WebAuthn] Add WebAuthn API #6311

Merged
merged 9 commits into from
Sep 19, 2024
Merged

[WebAuthn] Add WebAuthn API #6311

merged 9 commits into from
Sep 19, 2024

Conversation

feedop
Copy link
Collaborator

@feedop feedop commented Sep 5, 2024

Description of Change

Add C# API for Web Authentication including public API, interop and documentation.

API Changes

  • ACR: TCSACR-597

@feedop feedop added ACR Required API12 Platform : Tizen 9.0 / TFM: net6.0-tizen9.0 labels Sep 5, 2024
@TizenAPI-Bot
Copy link
Collaborator

Public API Changed

Please follow the ACR process for the changed API below.
Added: 178, Removed: 0, Changed: 0

src/Tizen.Security.WebAuthn/Interop/Interop.Libraries.cs Outdated Show resolved Hide resolved
namespace Tizen.Security.WebAuthn
{
/// <summary>
/// Authenticator extension
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please ensure that description ends with a period. In C# API period is almost always there, one exception is single word enum value description (if all of them in that enum are very short).

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

/// <summary>
/// Authenticator extension
/// </summary>
/// <since_tizen> 9 </since_tizen>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see in this PR since_tizen with values 4, 7, 9. It should be 12 in all newly added items.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

Comment on lines 33 to 34
/// Extension Identifier defined in the following registry.
/// https://www.iana.org/assignments/webauthn/webauthn.xhtml#webauthn-extension-ids
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be best to use links in the text like this:

Suggested change
/// Extension Identifier defined in the following registry.
/// https://www.iana.org/assignments/webauthn/webauthn.xhtml#webauthn-extension-ids
/// Extension Identifier defined in the <a href="https://www.iana.org/assignments/webauthn/webauthn.xhtml#webauthn-extension-ids">WebAuthn Extension Identifiers registry</a>.

but for now lets just replace period with a colon ("registry. https..." -> "registry: https...")

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

/// Initializes a new instance of the <see cref="AuthenticationSelCri"/> class.
/// </summary>
/// <since_tizen> 9 </since_tizen>
/// <param name="attachment">Authenticator attachment modality</param>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please use periods in params as well

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

@@ -0,0 +1,25 @@
---
uid: Tizen.Security.WebAuthm
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

typo, uid must match the fully qualified namespace exactly

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

remarks: *content
---
## Overview
It provides an Authenticator cclass containing methods for creating public key-based credentials
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

typo

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

/// Initializes a new instance of the <see cref="PubkeyCredCreationOptions"/> class.
/// </summary>
/// /// <since_tizen> 9 </since_tizen>
/// <param name="rp">Contains a name and an identifier for the Relying Party responsible for the request</param>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

that's a lot of parameters, if they are optional they maybe specify default values in the method signature so the user will be able to skip those that are not used,
see https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/named-and-optional-arguments?redirectedfrom=MSDN#optional-arguments

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done. I made the same change to PubkeyCredRequestOptions.

@TizenAPI-Bot
Copy link
Collaborator

Public API Changed

Please follow the ACR process for the changed API below.
Added: 178, Removed: 5, Changed: 3

Internal API Changed

Added: 4, Removed: 0, Changed: 0

Added

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Void Tizen.NUI.DragAndDrop::AddListener(Tizen.NUI.BaseComponents.View,System.String,Tizen.NUI.DragAndDrop/DragAndDropEventHandler)

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Void Tizen.NUI.DragAndDrop::AddListener(Tizen.NUI.Window,System.String,Tizen.NUI.DragAndDrop/DragAndDropWindowEventHandler)

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Collections.Generic.Dictionary`2<System.String,System.String> Tizen.NUI.DragData::DataMap

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.String[] Tizen.NUI.DragEvent::MimeTypes()

@TizenAPI-Bot
Copy link
Collaborator

Public API Changed

Please follow the ACR process for the changed API below.
Added: 197, Removed: 20, Changed: 3

Internal API Changed

Added: 19, Removed: 0, Changed: 0

Added

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Void Tizen.NUI.DragAndDrop::AddListener(Tizen.NUI.BaseComponents.View,System.String,Tizen.NUI.DragAndDrop/DragAndDropEventHandler)

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Void Tizen.NUI.DragAndDrop::AddListener(Tizen.NUI.Window,System.String,Tizen.NUI.DragAndDrop/DragAndDropWindowEventHandler)

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Collections.Generic.Dictionary`2<System.String,System.String> Tizen.NUI.DragData::DataMap

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.String[] Tizen.NUI.DragEvent::MimeTypes()

+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerLockStateChangedEventArgs

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerLock Tizen.System.PowerLockStateChangedEventArgs::PowerLockType()

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerLockState Tizen.System.PowerLockStateChangedEventArgs::PowerLockState()

+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerStateChangeRequestEventArgs

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Int32 Tizen.System.PowerStateChangeRequestEventArgs::Retval()

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerState Tizen.System.PowerStateChangeRequestEventArgs::PowerState()

+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerStateWaitEventArgs

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.UInt64 Tizen.System.PowerStateWaitEventArgs::WaitCallbackId()

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerState Tizen.System.PowerStateWaitEventArgs::NextState()

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerState Tizen.System.PowerStateWaitEventArgs::PrevState()

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransitionReason Tizen.System.PowerStateWaitEventArgs::TransitionReason()

+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransientStateWaitEventArgs

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.UInt64 Tizen.System.PowerTransientStateWaitEventArgs::WaitCallbackId()

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransientState Tizen.System.PowerTransientStateWaitEventArgs::TransientState()

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransitionReason Tizen.System.PowerTransientStateWaitEventArgs::TransitionReason()

1 similar comment
@TizenAPI-Bot
Copy link
Collaborator

Public API Changed

Please follow the ACR process for the changed API below.
Added: 197, Removed: 20, Changed: 3

Internal API Changed

Added: 19, Removed: 0, Changed: 0

Added

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Void Tizen.NUI.DragAndDrop::AddListener(Tizen.NUI.BaseComponents.View,System.String,Tizen.NUI.DragAndDrop/DragAndDropEventHandler)

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Void Tizen.NUI.DragAndDrop::AddListener(Tizen.NUI.Window,System.String,Tizen.NUI.DragAndDrop/DragAndDropWindowEventHandler)

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Collections.Generic.Dictionary`2<System.String,System.String> Tizen.NUI.DragData::DataMap

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.String[] Tizen.NUI.DragEvent::MimeTypes()

+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerLockStateChangedEventArgs

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerLock Tizen.System.PowerLockStateChangedEventArgs::PowerLockType()

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerLockState Tizen.System.PowerLockStateChangedEventArgs::PowerLockState()

+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerStateChangeRequestEventArgs

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Int32 Tizen.System.PowerStateChangeRequestEventArgs::Retval()

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerState Tizen.System.PowerStateChangeRequestEventArgs::PowerState()

+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerStateWaitEventArgs

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.UInt64 Tizen.System.PowerStateWaitEventArgs::WaitCallbackId()

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerState Tizen.System.PowerStateWaitEventArgs::NextState()

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerState Tizen.System.PowerStateWaitEventArgs::PrevState()

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransitionReason Tizen.System.PowerStateWaitEventArgs::TransitionReason()

+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransientStateWaitEventArgs

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.UInt64 Tizen.System.PowerTransientStateWaitEventArgs::WaitCallbackId()

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransientState Tizen.System.PowerTransientStateWaitEventArgs::TransientState()

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransitionReason Tizen.System.PowerTransientStateWaitEventArgs::TransitionReason()

/// <since_tizen> 12 </since_tizen>
/// <remarks>This method must be called before other methods are called.</remarks>
/// <feature>http://tizen.org/feature/security.webauthn</feature>
/// <param name="apiVersionNumber">API version number to set. Use <see cref="ApiVersionNumber"/> as an input.</param>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what does this mean? User should take the ApiVersionNumber and pass it here all the time? I would prefer if things were automatic. Who provides the value of the property? Is there sensible default value?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed it so that API version is now set automatically.

/// <summary>
/// Initializes a new instance of the <see cref="HybridLinkedData"/> class.
/// </summary>
/// <param name="contactId">CBOR:"1".</param>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what are those CBORs? Could you provide something more for those parameters and properties below? or maybe it would be clear if I read the referenced specification?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added a link to the CBOR format specification. It should be much clearer now.

/// <feature>http://tizen.org/feature/security.webauthn</feature>
/// <exception cref="NotSupportedException">The required feature is not supported.</exception>
/// <exception cref="InvalidOperationException">Not allowed in the current context.</exception>
public static void Cancel()
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In C# CancellationTokens are used to cancel ongoing operation. Maybe there is no need for that yet, and adding that mechanism can be considered in the future.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Given that the idea to convert the methods into async ones has been abandoned for now, an explicit Cancel call is needed.

/// </feature>
/// <param name="clientData">UTF-8 encoded JSON serialization of the client data.</param>
/// <param name="options">Specifies the desired attributes of the to-be-created public key credential.</param>
/// <param name="callbacks">The callback functions to be invoked.</param>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

callbacks from native API are usually replaced with C# solutions like async/Task or events. This case is a little more complicated because there are data that should be optionally provided back to the process. Maybe a class like UserFeedbackProvider could be designed which the app developer would implement to instead, but there is not much of a benefit so let's keep this McCallbacks parameter and additionally provide the result PubkeyCredentialAttestation in a Task.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unfortunately, the possibility of some callbacks being called multiple times makes it very difficult to convert this API into something that uses standard C# async programming. For now, we've decided to leave it as is.

/// <summary>
/// JSON-compatible serialization of client data.
/// </summary>
public byte[] ClientDataJson { get; init; }
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

there are few fields mentioning JSON but they are still byte[], I would expect maybe not a JSON parsed object but maybe a string there, a valid Json string should fit a C# string, maybe you don't want to deal with invalid data, encoding, etc and prefer to expose raw data?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The native client is already equipped with a json parser, so any additional invalid data detection etc. on the C# side would be redundant. Given the fact that the documentation contains a link to the specification containing instructions on how the JSON should be serialized, I think it should be acceptable to simply expose the raw byte array to the user.

@TizenAPI-Bot
Copy link
Collaborator

Public API Changed

Please follow the ACR process for the changed API below.
Added: 328, Removed: 20, Changed: 3

Internal API Changed

Added: 19, Removed: 0, Changed: 0

Added

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Void Tizen.NUI.DragAndDrop::AddListener(Tizen.NUI.BaseComponents.View,System.String,Tizen.NUI.DragAndDrop/DragAndDropEventHandler)

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Void Tizen.NUI.DragAndDrop::AddListener(Tizen.NUI.Window,System.String,Tizen.NUI.DragAndDrop/DragAndDropWindowEventHandler)

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Collections.Generic.Dictionary`2<System.String,System.String> Tizen.NUI.DragData::DataMap

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.String[] Tizen.NUI.DragEvent::MimeTypes()

+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerLockStateChangedEventArgs

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerLock Tizen.System.PowerLockStateChangedEventArgs::PowerLockType()

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerLockState Tizen.System.PowerLockStateChangedEventArgs::PowerLockState()

+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerStateChangeRequestEventArgs

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Int32 Tizen.System.PowerStateChangeRequestEventArgs::Retval()

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerState Tizen.System.PowerStateChangeRequestEventArgs::PowerState()

+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerStateWaitEventArgs

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.UInt64 Tizen.System.PowerStateWaitEventArgs::WaitCallbackId()

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerState Tizen.System.PowerStateWaitEventArgs::NextState()

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerState Tizen.System.PowerStateWaitEventArgs::PrevState()

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransitionReason Tizen.System.PowerStateWaitEventArgs::TransitionReason()

+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransientStateWaitEventArgs

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.UInt64 Tizen.System.PowerTransientStateWaitEventArgs::WaitCallbackId()

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransientState Tizen.System.PowerTransientStateWaitEventArgs::TransientState()

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransitionReason Tizen.System.PowerTransientStateWaitEventArgs::TransitionReason()

@TizenAPI-Bot
Copy link
Collaborator

Public API Changed

Please follow the ACR process for the changed API below.
Added: 326, Removed: 20, Changed: 3

Internal API Changed

Added: 19, Removed: 0, Changed: 0

Added

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Void Tizen.NUI.DragAndDrop::AddListener(Tizen.NUI.BaseComponents.View,System.String,Tizen.NUI.DragAndDrop/DragAndDropEventHandler)

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Void Tizen.NUI.DragAndDrop::AddListener(Tizen.NUI.Window,System.String,Tizen.NUI.DragAndDrop/DragAndDropWindowEventHandler)

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Collections.Generic.Dictionary`2<System.String,System.String> Tizen.NUI.DragData::DataMap

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.String[] Tizen.NUI.DragEvent::MimeTypes()

+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerLockStateChangedEventArgs

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerLock Tizen.System.PowerLockStateChangedEventArgs::PowerLockType()

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerLockState Tizen.System.PowerLockStateChangedEventArgs::PowerLockState()

+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerStateChangeRequestEventArgs

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Int32 Tizen.System.PowerStateChangeRequestEventArgs::Retval()

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerState Tizen.System.PowerStateChangeRequestEventArgs::PowerState()

+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerStateWaitEventArgs

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.UInt64 Tizen.System.PowerStateWaitEventArgs::WaitCallbackId()

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerState Tizen.System.PowerStateWaitEventArgs::NextState()

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerState Tizen.System.PowerStateWaitEventArgs::PrevState()

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransitionReason Tizen.System.PowerStateWaitEventArgs::TransitionReason()

+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransientStateWaitEventArgs

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.UInt64 Tizen.System.PowerTransientStateWaitEventArgs::WaitCallbackId()

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransientState Tizen.System.PowerTransientStateWaitEventArgs::TransientState()

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransitionReason Tizen.System.PowerTransientStateWaitEventArgs::TransitionReason()

---
## Overview
It provides an [Authenticator](xref:Tizen.Security.WebAuthn.Authenticator) class containing methods for creating public key-based credentials
([Authenticator.MakeCredential()](xref:Tizen.Security.WebAuthn.Authenticator.MakeCredential(Tizen.Security.WebAuthn.ClientData,Tizen.Security.WebAuthn.PubkeyCredCreationOptions,Tizen.Security.WebAuthn.McCallbacks))) and using them ([Authenticator.GetAssertion()](xref:Tizen.Security.WebAuthn.Authenticator.GetAssertion(Tizen.Security.WebAuthn.ClientData,Tizen.Security.WebAuthn.PubkeyCredRequestOptions,Tizen.Security.WebAuthn.GaCallbacks))). Both these operations are performed asynchronously. Callbacks passed as arguments are used to notify about the progress
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please update the type name of last parameters

/// If the request does not need to display a QR code
/// then this callback function won't be invoked.
/// </param>
/// <param name="responseCallback">Callback function for getting the final response.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please break the line - the text should start on a new line

Comment on lines 51 to 52
/// * - proxy issues,
/// * - reached the limit of credentials stored by the authenticator.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please remove those * before -, on in lines 51-52, 54-55

@TizenAPI-Bot
Copy link
Collaborator

Public API Changed

Please follow the ACR process for the changed API below.
Added: 326, Removed: 20, Changed: 3

Internal API Changed

Added: 19, Removed: 0, Changed: 0

Added

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Void Tizen.NUI.DragAndDrop::AddListener(Tizen.NUI.BaseComponents.View,System.String,Tizen.NUI.DragAndDrop/DragAndDropEventHandler)

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Void Tizen.NUI.DragAndDrop::AddListener(Tizen.NUI.Window,System.String,Tizen.NUI.DragAndDrop/DragAndDropWindowEventHandler)

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Collections.Generic.Dictionary`2<System.String,System.String> Tizen.NUI.DragData::DataMap

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.String[] Tizen.NUI.DragEvent::MimeTypes()

+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerLockStateChangedEventArgs

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerLock Tizen.System.PowerLockStateChangedEventArgs::PowerLockType()

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerLockState Tizen.System.PowerLockStateChangedEventArgs::PowerLockState()

+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerStateChangeRequestEventArgs

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Int32 Tizen.System.PowerStateChangeRequestEventArgs::Retval()

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerState Tizen.System.PowerStateChangeRequestEventArgs::PowerState()

+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerStateWaitEventArgs

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.UInt64 Tizen.System.PowerStateWaitEventArgs::WaitCallbackId()

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerState Tizen.System.PowerStateWaitEventArgs::NextState()

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerState Tizen.System.PowerStateWaitEventArgs::PrevState()

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransitionReason Tizen.System.PowerStateWaitEventArgs::TransitionReason()

+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransientStateWaitEventArgs

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.UInt64 Tizen.System.PowerTransientStateWaitEventArgs::WaitCallbackId()

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransientState Tizen.System.PowerTransientStateWaitEventArgs::TransientState()

+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransitionReason Tizen.System.PowerTransientStateWaitEventArgs::TransitionReason()

Filip Skrzeczkowski and others added 9 commits September 19, 2024 13:53
Create the C# API module for WebAuthn and provide initial Interop code
Provide the signatures and documentation for the public API of the
WebAuthn module and create internal helpers needed for data marshalling
- fix typos
- add periods in summaries and params descriptions
- change since_tizen value to 12
- move library file definitions to Interop.Libwebauthn.cs
 - API version is now set automatically on the first call.
 - Remove abbreviations from class names.
@TizenAPI-Bot
Copy link
Collaborator

Public API Changed

Please follow the ACR process for the changed API below.
Added: 176, Removed: 0, Changed: 0

@feedop feedop merged commit 2bc29b5 into Samsung:master Sep 19, 2024
3 checks passed
@feedop feedop deleted the webauthn branch September 19, 2024 12:05
bshsqa pushed a commit to bshsqa/TizenFX that referenced this pull request Sep 25, 2024
[WebAuthn] Add WebAuthn module and public API

Provide the implementation and documentation for the public API of the
WebAuthn module implementing the passkey functionality.

Co-authored-by: Piotr Szydełko <[email protected]>
bshsqa pushed a commit that referenced this pull request Sep 25, 2024
[WebAuthn] Add WebAuthn module and public API

Provide the implementation and documentation for the public API of the
WebAuthn module implementing the passkey functionality.

Co-authored-by: Piotr Szydełko <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ACR Required API12 Platform : Tizen 9.0 / TFM: net6.0-tizen9.0
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants